package api_models

type GetAnchorProfileReq struct {
	AnchorId int //主播id
}

type GetAnchorProfileResp struct {
	IsAttend      int           `json:"is_attend"` //是否关注
	AnchorProfile AnchorProfile `json:"anchor_profile"`
	Groups        []Group       `json:"groups"`
}

type AnchorProfile struct {
	Id           int    `json:"id"`            //主播id
	Avatar       string `json:"avatar"`        //直播头像
	Name         string `json:"name"`          //主播名称
	Introduce    string `json:"introduce"`     //主播介绍
	UserLevel    int    `json:"user_level"`    //主播等级
	HighHot      int64  `json:"high_hot"`      //最高人气值
	FansCount    int    `json:"fans_count"`    //粉丝数量
	CategoryId   int    `json:"category_id"`   //直播分类id
	CategoryName string `json:"category_name"` //直播分类
	LiveId       uint64 `json:"live_id"`       //直播id
}

type Group struct {
	GroupId     int    `json:"group_id"`      //群id
	FansGroupId string `json:"fans_group_id"` //im群id
	Name        string `json:"name"`          //名称
	UserNum     int    `json:"user_num"`      //群人数
	LimitNum    int    `json:"limit_num"`     //总数限制
	IsJoined    bool   `json:"is_joined"`     //是否加入
}

type DelMsgReq struct {
	GroupId int `json:"group_id"` //群id
	MsgId   int `json:"msg_id"`   //消息id
}

type RevokeMsgReq struct {
	DelMsgReq
}

type FrontendBanUserReq struct {
	Duration    int    `json:"duration"`      //禁言时长-分钟 (小于0为永久禁言)
	Reason      string `json:"reason"`        //禁言原因
	BanUserId   int    `json:"ban_user_id"`   //禁言用户id
	BanType     int    `json:"ban_type"`      //禁言类型
	FansGroupId string `json:"fans_group_id"` //禁言im群id
}

type KickUserReq struct {
	KickUserIds []uint64 `json:"kick_user_ids"` //被踢用户id
	GroupId     int      `json:"group_id"`      //群id
}

type GetGroupInfoReq struct {
	GroupId int `json:"group_id"` //群id
	Page    int `json:"page"`     //页
	Size    int `json:"size"`     //每页条数
}

type GetGroupInfoResp struct {
	Name        string        `json:"name"`          //群名称
	Avatar      string        `json:"avatar"`        //群头像
	Id          int           `json:"id"`            //群id
	FansGroupId string        `json:"fans_group_id"` //im群id
	Introduce   string        `json:"introduce"`     //群介绍
	UserNum     int           `json:"user_num"`      //群人数
	LimitNum    int           `json:"limit_num"`     //群限制人数
	Members     []GroupMember `json:"members"`       //群成员
	UserInfo    SelfMember    `json:"user_info"`     //用户信息
}

type SelfMember struct {
	GroupMember
	IsJoined bool `json:"is_joined"` //是否加入
}

type GroupMember struct {
	Id       int    `json:"id"`        //用户id
	Avatar   string `json:"avatar"`    //头像
	NickName string `json:"nick_name"` //昵称
	Role     int    `json:"role"`      //角色 0-群员 1-管理 2-群主 3-机器人
	IsBan    bool   `json:"is_ban"`    //是否禁言
}

type ClearHistoryReq struct {
	GroupId int `json:"group_id"` //群id
}

type ClearAndQuitReq struct {
	ClearHistoryReq
}

type GetGroupMembersReq struct {
	GroupId int `json:"group_id"` //群id
}

type GetGroupMembersResp struct {
	Members  []GroupMember `json:"members"`   //群成员
	UserInfo SelfMember    `json:"user_info"` //用户信息
}

type AddToGroupChatReq struct {
	GroupId int `json:"group_id"`
}

type GetChatListReq struct {
}

type GetFansGroupHistoryRequest struct {
	GroupId string `json:"group_id" validate:"required"`
	Page    int32  `json:"page" validate:"required,min=1"`
	Limit   int32  `json:"limit" validate:"required,min=10"`
}

type GetChatListResp struct {
	TotalUnread int        `json:"total_unread"`
	ChatList    []ChatList `json:"chat_list"`
}

type ChatList struct {
	UniqId               string               `json:"uniq_id"`                 //唯一id
	GroupId              int                  `json:"group_id"`                //群id
	AnchorId             int                  `json:"anchor_id"`               //主播id
	Avatar               string               `json:"avatar"`                  //头像
	Name                 string               `json:"name"`                    //名称
	UserNum              int                  `json:"user_num"`                //群聊人数
	Type                 int                  `json:"type"`                    //类型 0-群聊 1-私聊 2-房管私聊
	UnreadNum            int                  `json:"unread_num"`              //未读消息计数
	IsOnline             bool                 `json:"is_online"`               //是否在线
	Status               int32                `json:"status"`                  //0-离线 1-在线 2-直播中
	FansGroupId          string               `json:"fans_group_id"`           //im群id
	MgrId                int                  `json:"mgr_id"`                  //房管私聊的房管id
	MgrChatUserId        int                  `json:"mgr_chat_user_id"`        //房管私聊对面用户id
	MgrChatId            string               `json:"mgr_chat_id"`             //房管私聊对话id
	ChatTime             string               `json:"chat_time"`               //私聊日期
	PrivateChatLatestMsg PrivateChatLatestMsg `json:"private_chat_latest_msg"` //私聊最后消息
}

type GetBanInfoReq struct {
	BanUserId   int    `json:"ban_user_id"`   //禁言用户id
	FansGroupId string `json:"fans_group_id"` //禁言用户的im群id
}

type GetBanInfoResp struct {
	IsBan        bool   `json:"is_ban"`         //是否禁言
	UserName     string `json:"user_name"`      //用户名称
	Avatar       string `json:"avatar"`         //头像
	UserLevel    int    `json:"user_level"`     //用户等级
	UserVipTitle int    `json:"user_vip_title"` //用户vip头衔
	Reason       string `json:"reason"`         //禁言原因描述
	DurationDesc string `json:"duration_desc"`  //禁言多久的自然语言
}

type CancelBanUserReq struct {
	BanUserId   int    `json:"ban_user_id"`   //禁言用户id
	FansGroupId string `json:"fans_group_id"` //禁言用户的im群id
}

type ReadReq struct {
	FansGroupId string `json:"fans_group_id"` //用户的im群id
}

type GroupChatLatestMsg struct {
	FansGroupId      string `json:"fans_group_id"`      //im粉丝群Id
	LatestMsgTime    int64  `json:"latest_msg_time"`    //最后一次发送消息的时间戳 (秒)
	LatestMsg        string `json:"latest_msg"`         //最近一次消息
	FromUserId       int    `json:"from_user_id"`       //来源用户id
	FromUserNickname string `json:"from_user_nickname"` //来源用户昵称
}
